/**
*		@file ConstTable.h
*		@brief ConstTable class
*
*		@author Lan Ziquan
*
*		@date 1/25/2012
*/

#ifndef CONSTANT_H
#define CONSTANT_H

#include <set>
#include <vector>
using namespace std;

class ConstTable
{
public:
	/**
	*		@brief This method will return the size of ConstTable
	*/
	static int		GetSize() { return si_constants_.size(); };

	/**
	*		@brief This method will return a vector of all constants stored in ConstTable
	*/
	static vector<int>	GetConstList();

	/**
	*		@brief This method will insert a constant into ConstTable without duplication
	*		@param constant		The constant to be inserted
	*/
	static void		InsertConst(int constant);

	/**
	*		@brief This method will check the existance of a constant in ConstTable
	*		@param constant		The constant to be checked
	*/
	static bool		HasConst(int constant);

private:
	static set<int>	si_constants_;

};

#endif